#include <utility>//该头文件定义重载的关系运算符，从而达到简化关系运算符的目的，定义一个pair类型
#include <stdlib.h>//standard library标准库头文件
#include <time.h>//包含日期和时间的头文件，用于确定时间
#include "GameModel.h"

GameModel::GameModel()
{

}
void GameModel::startGame(GameType type)//开始游戏函数定义
{
    gameType = type;
    // 初始棋盘
    gameMapVec.clear();//清除游戏中棋盘和棋子的情况，从而达到初始化的目的
    for (int i = 0; i < kBoardSizeNum; i++)
    {
        std::vector<int> lineBoard;//vector的初始化，形成一个空对象
        for (int j = 0; j < kBoardSizeNum; j++)
            lineBoard.push_back(0);//压入元素，因棋局还没开始，故棋盘为空白，各点均记为0
        gameMapVec.push_back(lineBoard);//将lineBoard中的元素从gameMapVec最后开始插入，形成空白棋盘
    }

    // 如果是AI模式，需要初始化评分数组；若为双人对战模式，则不需要
    if (gameType == AI)
    {
        scoreMapVec.clear();//vector的初始化
        for (int i = 0; i < kBoardSizeNum; i++)
        {
            std::vector<int> lineScores;//初始化过程
            for (int j = 0; j < kBoardSizeNum; j++)
                lineScores.push_back(0);//元素压入
            scoreMapVec.push_back(lineScores);
        }
    }

    // 己方下为true,对方下位false，第一个下棋的为己方，故初始化为true
    playerFlag = true;
}
